package fr.charlott.business.dto;

import java.io.Serializable;

import javax.validation.constraints.Pattern;

import org.apache.commons.lang.StringUtils;
import org.hibernate.validator.constraints.Email;

public class AdresseDTO implements Serializable {

	private static final long serialVersionUID = -6886935052086808739L;

	private Long id;

	private String nomDeRue;

	private String ville;

	@Pattern(regexp="^[0-9]{5}|$", message="Le code postal n'est pas valide")
	private String codePostal;

	@Email
	private String email;
	
	@Pattern(regexp="^0[1-9]([-. ]?[0-9]{2}){4}|$", message="Le numéro n'est pas valide")
	private String telDomicile;
	
	@Pattern(regexp="^0[1-9]([-. ]?[0-9]{2}){4}||$", message="Le numéro n'est pas valide")
	private String telPortable;

	// setters - getters

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNomDeRue() {
		return nomDeRue;
	}

	public void setNomDeRue(String nomDeRue) {
		this.nomDeRue = nomDeRue;
	}

	public String getVille() {
		return ville;
	}

	public void setVille(String ville) {
		this.ville = ville;
	}

	public String getCodePostal() {
		return codePostal;
	}

	public void setCodePostal(String codePostal) {
		this.codePostal = codePostal;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTelDomicile() {
		return formatTel(telDomicile);
	}

	public void setTelDomicile(String telDomicile) {
		this.telDomicile = telDomicile;
	}

	public String getTelPortable() {
		return formatTel(telPortable);
	}

	public void setTelPortable(String telPortable) {
		this.telPortable = telPortable;
	}

	public String toString() {
		return "" + (nomDeRue != null ? nomDeRue + " ": "") + 
				(codePostal != null ? codePostal + " ": "") + 
				(ville != null ? ville : ""); 
	}

	public String getTelephone() {
		if (StringUtils.isEmpty(telDomicile) && StringUtils.isEmpty(telPortable)) {
			return "";
		}
		else if (StringUtils.isNotEmpty(telDomicile) && StringUtils.isEmpty(telPortable)) {
			return formatTel(telDomicile);
		}
		else if (StringUtils.isEmpty(telDomicile) && StringUtils.isNotEmpty(telPortable)) {
			return formatTel(telPortable);
		}
		else if (StringUtils.isNotEmpty(telDomicile) && StringUtils.isNotEmpty(telPortable)) {
			return formatTel(telPortable);
		}
		
		return telPortable;
	}
	
	public String formatTel(String tel){
		if (StringUtils.isNotEmpty(tel)){
			if (tel.length() > 10)
				return StringUtils.replaceEach(tel, new String[]{"-", "."}, new String[]{" ", " "});
		}
		return tel;
	}

}
